<?php
/**
 * Cette page permet d'effectuer les requêtes SQL exécutées en AJAX sur la page films
 * Elle implémante le strict minimum de phpBB3 pour faire tourner ça, ce qui fait pas mal en fait
 * 
 * @author : Filament
 * @copyright : Disney Magic Interactive
 * @package : Films
 * @name : requetes_films.php
 * @since 17/07/11
 * @version 0.1 (17/07/11) 
 **/


/**
 * Les inclusions nécessaires pour phpBB3 :
 */
//Chemin du répertoire courant à la racine
$rep ="../";

//design via phpBB3
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : $rep.'phpBB3/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
require($phpbb_root_path . 'includes/functions_user.' . $phpEx);   

//Informations sur le membre :
$user->session_begin();
$auth->acl($user->data);

//Mise en page
$user->setup('viewforum');

//Déclarations essentielles pour le traitement de la page :
$bbcode_bitfield = '';
$bbcode = new bbcode(base64_encode($bbcode_bitfield));

/**
 * Ici on exécute les requêtes :
 */
$aResponse['error'] = false;
$aResponse['message'] = '';
	
if(isset($_POST['action']))
{
	if(htmlentities($_POST['action'], ENT_QUOTES, 'UTF-8') == 'rating')
	{
		/*
		* vars
		*/
		$id = intval($_POST['idBox']);
		$rate = floatval($_POST['rate']);
		
		/**
		 * On enregistre la note : si elle est nouvelle on l'ajoute, sinon on la modifie :
		 */
		if($user->data['is_registered'] && !$user->data['is_bot']) {
			$test_update = "SELECT
								v.id_vote
							FROM
								" . FILM_VOTE_TABLE . " fv INNER JOIN " . VOTE_TABLE . " v
									ON fv.id_vote = v.id_vote
							WHERE
									fv.id_film = '".$_POST['data']."'
								AND
									v.id_membre = " . $user->data['user_id'] . "";
			$result = $db->sql_query($test_update);
			if($result->num_rows > 0) {
				$data = $db->sql_fetchrow($result);
				$update = "UPDATE dmi_vote 
							SET
								vote = '".$_POST['rate'] . "'
								, timestamp = '".time()."'
							WHERE
								id_vote = '".$data['id_vote']."'
							";
				$result_update = $db->sql_query($update);
				$success = $result_update;
				if($success)
					$aResponse['message'] = 'Votre vote a &eacute;t&eacute; modifi&eacute;. :-)';
			}
			else { 
				$insert = "INSERT INTO dmi_vote
							(id_membre, vote, timestamp)
							VALUES
								('".$user->data['user_id']."', '".$_POST['rate']."', '".time()."')";
				$result_insert = $db->sql_query($insert);
				$success = $result_insert;	
				if($success) {
					$insert = "INSERT INTO dmi_film_vote
							(id_film, id_vote)
							VALUES
								('".$_POST['data']."', '".$db->sql_nextid()."')";
					$result_insert = $db->sql_query($insert);
					$success = $result_insert;
					if($success)
						$aResponse['message'] = 'Votre vote a &eacute;t&eacute; enregistr&eacute;. :-)';
				}
			}
			$db->sql_freeresult($result);
			
			//Puisqu'une note a été ajoutée ou modifiée recalculons la moyenne :
			if($success) {
				$updateMoyenne = "UPDATE " . FILM_TABLE . "
									SET moyenne = (SELECT 
														avg(v.vote) 
													FROM
														"  . VOTE_TABLE . " v INNER JOIN " . FILM_VOTE_TABLE . " fv
															ON v.id_vote = fv.id_vote
													WHERE
														fv.id_film =  '". $_POST['data'] . "')
									WHERE
										id_film = '" . $_POST['data'] . "'";
				$db->sql_query($updateMoyenne);
			}
		} else {
			$success = false;
		}
		
		
		// json datas send to the js file
		if($success)
		{
			echo json_encode($aResponse);
		}
		else
		{
			$aResponse['error'] = true;
			$aResponse['message'] = 'Il y a eu une erreur pendant le vote, essayez &agrave; nouveau.';
			
			echo json_encode($aResponse);
		}
	}
	else
	{
		$aResponse['error'] = true;
		$aResponse['message'] = 'Vous acc&eacute;dez &agrave; cette page d\'une fa&ccedil;on surprenante, les administrateurs ont &eacute;t&eacute; pr&eacute;venus.';		
			
		echo json_encode($aResponse);
	}
}
else
{
	$aResponse['error'] = true;
	$aResponse['message'] = '$_POST[\'action\'] not found';
	
	echo json_encode($aResponse);
}

/**
 * Il FAUT appeler le pied de page pour fermer la connexion à la bdd, sinon user_max_connection
 */
garbage_collection();
exit_handler();
?>